﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using KBManagement.DAL;
using KBManagement.BIZ;
using KBManagement.Library;

namespace KBManagement
{
    public partial class AddEditTimeSlot : Form
    {

        KBSQLClassDataContext context;
        TransactionLog transactionLog;
        private TimeSlot objTimeslot;
        public AddEditTimeSlot(TimeSlot timeslot)
        {
            this.objTimeslot = timeslot;
            transactionLog = new TransactionLog();
            context = new KBSQLClassDataContext();
            InitializeComponent();
            if (timeslot != null)
            {
                label6.Text = "Cập nhật ca làm việc mới";
                textBox2.Text = timeslot.Ts_Name;
                dtpStart.Text = timeslot.StartTime;
                dtpEnd.Text = timeslot.EndTime;
            }
            else
            {
                label6.Text = "Thêm ca làm việc mới";
            }
        }

        public void insertTimeSlot()
        {
            var timeSlot = new TimeSlot
            {
                Ts_Name = textBox2.Text,
                StartTime = dtpStart.Text,
                EndTime = dtpEnd.Text
            };
            ConfirmAddTimeslot confirm = new ConfirmAddTimeslot(timeSlot);
            if (confirm.ShowDialog() == DialogResult.OK)
            {
                context.TimeSlots.InsertOnSubmit(timeSlot);
                context.SubmitChanges();
                transactionLog.TransactionLogCommon("Nhan vien "+AdminSession.admin.UserName+" them moi 1 TimeSlot StartTime =" + dtpStart.Text + "EndTime = " + dtpEnd.Text);
                Utils.CreateInstance().NotificationInforObserver();
                textBox2.Text = "";
                Close();
            }
        }

        public void updateTimeSlot()
        {
            var timeSlot = new TimeSlot
            {
                Ts_Name = textBox2.Text,
                StartTime = dtpStart.Text,
                EndTime = dtpEnd.Text
            };
            ConfirmAddTimeslot confirm = new ConfirmAddTimeslot(timeSlot);
            if (confirm.ShowDialog() == DialogResult.OK)
            {
                TimeSlot tSlot = context.TimeSlots.SingleOrDefault(x => x.ID == objTimeslot.ID);
                tSlot.Ts_Name = textBox2.Text;
                tSlot.StartTime = dtpStart.Text;
                tSlot.EndTime = dtpEnd.Text;
                context.SubmitChanges();
                transactionLog.TransactionLogCommon("Nhân viên " + AdminSession.admin.UserName + " Cập nhật TimeSlot có mã số " + tSlot.ID+ " StartTime =" + dtpStart.Text + "EndTime = " + dtpEnd.Text);
                textBox2.Text = "";
                Close();
            }
        }

        private void btnOk_Click(object sender, EventArgs e)
        {
            if (Utils.CreateInstance().isNull(textBox2.Text))
            {
                MessageBox.Show("Xin mời nhập vào tên");
                return;
            }

            if (objTimeslot != null)
            {
                try
                {
                    updateTimeSlot();
                }
                catch (Exception)
                {
                    
                    MessageBox.Show("Thông tin bạn nhập có thể không lưu được vì xảy ra lỗi.Lỗi đã được hệ thống ghi lại và chờ xử lý");
                }
                
            }
            else
            {
                try
                {
                    insertTimeSlot();
                }
                catch (Exception)
                {
                    
                    MessageBox.Show("Thông tin bạn nhập có thể không lưu được vì xảy ra lỗi.Lỗi đã được hệ thống ghi lại và chờ xử lý");
                }
            }
            Utils.CreateInstance().NotificationInforObserver();
        }
    }
}
